package org.example.prototype;

/**
 * @author admin
 */
public class Circle implements Shape {
    private String color;
    private int radius;

    public Circle(String color, int radius) {
        this.color = color;
        this.radius = radius;
    }

    @Override
    public void draw() {
        System.out.println("绘制圆形: 颜色=" + color + ", 半径=" + radius);
    }

    //克隆方法
    //原型模式常用浅拷贝的原因
    //浅拷贝只需复制引用（约4-8字节），不递归复制整个对象树
    //深拷贝需要递归复制所有关联对象，开销较大
    //对象属性仅包含基本类型+不可变对象时（如示例中的int+String）浅拷贝的对象互不影响

    @Override
    public Shape clone() {
        try {
            return (Shape) super.clone(); // 浅拷贝
        } catch (CloneNotSupportedException e) {
            return null;
        }
    }

    // 设置方法
    public void setColor(String color) {
        this.color = color;
    }

    public void setRadius(int radius) {
        this.radius = radius;
    }
}